package es.uned.ii.si3.business;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import es.uned.ii.si3.dao.SolicitudDAO;
import es.uned.ii.si3.dao.SolicitudDAOImpl;
import es.uned.ii.si3.exceptions.ObjectNotFoundException;
import es.uned.ii.si3.model.Solicitud;

public class GestionSolicitudes {

	private SolicitudDAO solicitudDao;
	private Solicitud solicitud;
	
	public GestionSolicitudes() {
		solicitudDao=new SolicitudDAOImpl();
	}
	public ArrayList<Solicitud> getAllSolicitudes() throws ObjectNotFoundException{
		ArrayList<Solicitud> listaSolicitudes;
		try {
			listaSolicitudes=(ArrayList<Solicitud>) solicitudDao.getAllSolicitudes();
		} catch (SQLException e) {
			throw new ObjectNotFoundException("No existe ninguna solicitud disponible en este momento");
		}
		
		return listaSolicitudes;
	}
	
	public void insert() throws SQLException{
		solicitudDao.insert(this.solicitud);
    }
	/**
	 * @return the solicitud
	 */
	public Solicitud getSolicitud() {
		return solicitud;
	}
	/**
	 * @param solicitud the solicitud to set
	 */
	public void setSolicitud(Solicitud solicitud) {
		this.solicitud = solicitud;
	}
	
	public List encuentraAnyosAcademicosDistintos() {
		
    	return solicitudDao.encuentraAnyosAcademicosDistintos();
    }
	
	public List<Solicitud> encuentraTodasSolicitudes() throws ObjectNotFoundException, SQLException{	
		List result = solicitudDao.getAllSolicitudes();
        if (result.size()>0){
           	return result;
        }
        else{
        	throw new ObjectNotFoundException("No existe ninguna Solicitud disponible en este momento.");
        }		
	}

	public List<Solicitud> encuentraTodasSolicitudesDisponiblesPorAnyoAcademico(int anyoAcademico) throws SQLException, ObjectNotFoundException{
		
		List result = solicitudDao.getAllSolicitudesByAnyoAcademico(anyoAcademico);
        if (result.size()>0){
           	return result;
        }
        else{
        	throw new ObjectNotFoundException("No existe ninguna Solicitud disponible en este momento.");
        }	
	}
	public Solicitud getSolicitudById(int idSolicitud){
		
		solicitud=solicitudDao.getSolicitudById(idSolicitud);
		
		return solicitud;
	}
	public List<Solicitud> getSolicitudesPendientes(){
		List<Solicitud> listaSolicitudes=solicitudDao.getSolicitudesPendientes();
		
		return listaSolicitudes;
	}
	

	public boolean isAlumnoConSolicitudActiva(int idUsuario) {
		return solicitudDao.isAlumnoConSolicitudActiva(idUsuario) ;
	}
	
	public boolean actualizaSolicitud(Solicitud solicitud){
		boolean updateOk=false;
		updateOk=solicitudDao.update(solicitud);
		return updateOk;
		
	}
}
